// 用户路由模块

// 加载模块
const express = require('express')
const usersModel = require('../db/usersModel.js')

// 创建路由表（空表）
const router = express.Router()

// 向路由表添加内容：

// 验证是否已登录接口：http://localhost:8080/users/islogin
router.get('/islogin',(req,res)=>{
    if (req.session.login === 'is login') {
        // 已登录
        res.send({"code":1,"msg":"已登录","user":req.session.user})
    }
    else{
        // 未登录
        res.send({"code":0,"msg":"未登录"})
    }
})

// 退出登录接口：http://localhost:8080/users/logout
router.get('/logout',(req,res)=>{
    // 销毁session
    req.session.destroy((err)=>{// 销毁操作完成后执行
        if (err) {
            res.send({"code":0,"msg":"退出登录失败，请重试！"})
        } else {
            res.send({"code":1,"msg":"退出登录成功！"})
        }
    })
})

// 登录接口: 
// 1.前端发送登录请求
// 2.后端接收登录请求
// 3.解析接收参数
// 4.查询数据库（看是否登录成功）
// 5.把登录册结果响应给前端
// 6.前端将登录结果反馈给用户

// 接口地址:http://localhost:8080/users/login
// 请求方式:post
// 请求参数:user账号,pass密码
// 返回值:{"code":1,"msg":"登录成功"}
router.post('/login',(req,res)=>{
    console.log( req.session )// {session data} 

    // 获取参数并解构赋值
    let {user,pass} = req.body

    // 查询数据库验证账号密码
    usersModel.find({$and:[{user},{pass}]})
    .then((arr)=>{
        if (arr.length > 0) {
            // 登录成功后，向session data中存储数据
            req.session.login = 'is login' // 表示已登录的标识
            req.session.user = user // 保存用户账号

            res.send({"code":1,"msg":"登录成功"})
        } else {
            res.send({"code":0,"msg":"登录失败"})
        }
    })
})

// 注册接口：
// 1.前端发送注册请求
// 2.后端接收注册请求
// 3.解析接收参数
// 4.查询数据库（看是否可注册）
// 5.向数据库添加一个数据
// 6.把注册结果响应给前端
// 7.前端将注册结果反馈给用户

// 接口地址:http://localhost:8080/users/register
// 请求方式:post
// 请求参数:user账号,pass密码,email邮箱,nickname昵称,sex性别,age年龄
// 返回值:{"code":1,"msg":"注册成功"}
router.post('/register',(req,res)=>{
    // 获取参数并解构赋值
    let {user,pass,email,nickname,sex,age} = req.body

    // 查询数据库（看是否可注册）
    usersModel.find({user})
    .then((arr)=>{
        if (arr.length === 0) {
            // 数据库没有该账号,可以注册(添加一条数据)
            return usersModel.insertMany({user,pass,email,nickname,sex,age})
        } else {
            // 数据库有该账号,不可以注册
            res.send({"code":-1,"msg":"账号已存在"})
            // 终止链式调用
            return new Promise(()=>{})
        }
    })
    .then((arr)=>{
        if (arr.length > 0) {
            res.send({"code":1,"msg":"注册成功"})
        } else {
            res.send({"code":0,"msg":"注册失败"})
        }
    })
    .catch((err)=>{
        res.send({"code":-2,"msg":err})
    })
})

// 获取所有用户接口: http://localhost:8080/users/list
router.get('/list',(req,res)=>{
    // 获取参数并解构赋值
    let {a,b} = req.query
    console.log( a,b )

    // 查询数据库
    usersModel.find()
    .then((arr)=>{
        // 响应前端
        res.send(arr)
    })
    .catch((err)=>{
        // 响应前端
        res.send({"code":0,"msg":err})
    })
})

// 获取数据接口: http://localhost:8080/users/data
router.get('/data',(req,res)=>{
    // 获取参数并解构赋值
    let {a,b} = req.query
    console.log( a,b )

    setTimeout(()=>{
        // 响应前端
        res.send('来自服务端的数据')
    },4000)
})

// cookie相关的接口:http://localhost:8080/users/cookie
router.get('/cookie',(req,res)=>{
    // 获取客户端的cookie数据
    console.log( req.cookies )// { user1: 'xiaocuo', user2: 'xiaohua' }

    // 设置客户端的cookie数据
    res.cookie('user3','xiaoming',{
        maxAge: 1000*60*30,// 设置有效期
        path: '/',// 设置路径
        domain: 'localhost'// 设置域名
    })

    // 响应前端
    res.send('请求成功...')
})

// 导出路由表
module.exports = router
